In NAND flash memory, when the total number of errors in a codeword is larger than the error correction capability of error correcting code (ECC), ECC will fail to correct the stored data. NAND flash memory allows a flash controller to select a reference voltage between neighboring states to read. After a read operation, the data will be sent to an ECC decoder for error correction. If ECC decoding fails, another read reference voltage will be tried. Read reference voltage retry iterations will continue until ECC decoding can correct all the errors for a particular read reference voltage. However, sometimes ECC decoding may fail to correct all the errors even when the optimum read reference voltage is selected. The optimum read reference voltage may fail due to retention, read disturb, or simply the error floor at certain trapping sets.
It would be desirable to implement cell-to-cell program interference aware data recovery when ECC fails with an optimum read reference voltage.